==APC Smart UPS RS232通讯协议说明==
===硬件层协议===
*RS232接口，使用2400bit/s的波特率，1位起始位，8位数据位，1位停止位，无奇偶校验位。
*通讯码制是ASCII码。
===部分通讯命令描述===
*以下协议中，ASCII码区分大小写字符，所有的UPS返回信息后面都加上回车换行符（即0d 0a ）结束符。以下分为5类命令：
 连接UPS通讯命令，
 UPS状态命令，
 电池参数命令，
 输出UPS的电参数信息命令,
 UPS自动返回的警告信息. 

 前面4个命令是：查询方式，也就是上位机发什么命令，UPS就对应的返回什么数据上来。
 滴类是UPS自动向上位机发送警告字符，因为这是RS232通讯的，RS232是全双工的工作模式。


{| class="wikitable sortable"
|-
! 发送UPS命令 !! UPS返回信息 !! UPS延时时间长度 !! 含义说明 !! 备注
|-
|连接UPS通讯命令
|-
|Y  || SM || 50ms || 设置UPS当前在Smart Mode 这个UPS当前在以ASCII码连接通讯。 || 要与这个UPS进行通讯，必须要先用这个命令设置UPS当前状态。
|-
|以下是UPS状态命令
|-
|C  ||ddd.d：10进制的ASCII码的数据格式||80ms||UPS内部温度||
|-
|Q  ||dd：是16进制的ASCII码数据格式。如：返回ASCII码：“08”，说明UPS当前在线||50ms|| UPS starte Bit7：返回电池状态 Bit6：电池电压过低状态 Bit5：UPS超载运行 Bit4：UPS使用电池逆变 Bit3：UPS在线 Bit2：UPS内部工作模式；总是为0，此位可以不用理睬 Bit1：此位总是为0，可以不用理睬 Bit0：UPS运行时间校准，此位可以不用理睬 || 
|-
|一下是电池参数命令
|-
|g  ||Ddd：10进制的ASCII码的数据格式||60ms||UPS电池电压：如电池电压是48V，则返回“48“。
|-
|B  ||dd.dd||80ms||返回电池电压。
|-
|f ||f	ddd.d：10进制的ASCII码的数据格式||80ms||返回UPS的电池容量的百分比：如满容量是：100%
|-
|输出UPS的电参数信息命令：
|-
|/  ||dd.dd：10进制的ASCII码的数据格式||80ms||负载电流信息
|-
|\	||ddd.d: 10进制的ASCII码的数据格式	||80ms	||负载工作功率：单位是VA。
|-	
|L	||ddd.d：10进制的ASCII码的数据格式	||80ms	||UPS输出在线电压
|-	
|M	||ddd.d：10进制的ASCII码的数据格式	||80ms	||UPS输出在线最大电压
|-	
|N	||ddd.d：10进制的ASCII码的数据格式	||80ms	||UPS输出在线最小电压
|-	
|O	||ddd.d：10进制的ASCII码的数据格式	||80ms	||UPS输出当前电压
|-	
|F	||dd.dd：10进制的ASCII码的数据格式	||80ms	||UPS输出电压频率
|-
|UPS自动返回的警告信息
|-
|%	||||电池电压过低警告||	
|-
|#		||||UPS自动测试电池失败返回信息||
|-	
|Ctrl+D		||||UPS内部温度过高警告||
|-	
|！		||||UPS使用电池逆变输出||	
|-
|$		||||表示UPS刚刚从使用的电池切换到使用市电电压逆变||
|-	
|输入UPS电参数信息
|-
|Ctrl+I		||dd.dd:ddd.d数据与数据的中间以分好隔开；这是实际测出的数据结果49.98;225.2;225.2;225.2, 49.98表示输入电的频率，225.2表示A相电压；225.2表示B相电压；225.2表示C相电压||||
|
|}

以上协议中：发送的ASCII字符无0d 0a结束符，也无校验。

===程序流程如下：===
#开始
#发送链接通讯命令Y
#发送UPS命令
#处理返回状态数据
#以同样的方法发送命令及处理返回